<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>初级前端面试题</title>
		<link href="css/normalize.css" rel="stylesheet">
		<link href="css/interviewQuestions.css" rel="stylesheet">
	</head>

	<body>

		<div class="container">

			<div class="page">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2>前端开发面试知识点大纲：</h2>
					<h3>HTML&amp;CSS： </h3>
					<p>
						对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功：布局、盒子模型、选择器优先级及使用、HTML5、CSS3、移动端适应
					</p>
					<h3>JavaScript：</h3>
					<p>
						数据类型、面向对象、继承、闭包、插件、作用域、跨域、原型链、模块化、自定义事件、内存泄漏、事件机制、异步装载回调、模板引擎、Nodejs、JSON、ajax等。
					</p>
					<h3>其他：</h3>
					<p>
						HTTP、安全、正则、优化、重构、响应式、移动端、团队协作、可维护、SEO、UED、架构、职业生涯
					</p>
				</section>
				<section class="sectioncls">
					<h2>作为一名前端工程师，无论工作年头长短都应该必须掌握的知识点：</h2>
					<p> 1、DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动。 </p>
					<p>2、DOM操作  ——如何添加、移除、移动、复制、创建和查找节点等。 </p>
					<p>3、事件    —— 如何使用事件，以及IE和标准DOM事件模型之间存在的差别。</p>
					<p> 4、XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。</p>
					<p> 5、严格模式与混杂模式 —— 如何触发这两种模式，区分它们有何意义。 </p>
					<p> 6、盒模型 —— 外边距、内边距和边框之间的关系，及IE8以下版本的浏览器中的盒模型 </p>
					<p>7、块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们 </p>
					<p> 8、浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。</p>
					<p> 9、HTML与XHTML——二者有什么区别，你觉得应该使用哪一个并说出理由。</p>
					<p> 10、JSON  —— 作用、用途、设计结构。
				</section>
				<div class="pagefooter">1/27</div>
			</div>

			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<div class="bigHeader">HTML</div>
					<h2>一、 Doctype作用? 严格模式与混杂模式如何区分？它们有何意义?  </h2>
					<p>（1）、 &lt;!DOCTYPE&gt;声明位于文档中的最前面，处于 &lt;html&gt; 标签之前。告知浏览器的解析器，用什么文档类型 规范来解析这个文档。   </p>
					<p>（2）、严格模式的排版和 JS 运作模式是  以该浏览器支持的最高标准运行。 </p>
					<p> （3）、在混杂模式中，页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。 </p>
					<p>（4）、DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。 </p>
					<h2> 二、 行内元素有哪些？块级元素有哪些？ 空(void)元素有那些？  </h2>
					<p>（1）CSS规范规定，每个元素都有display属性，确定该元素的类型，每个元素都有默认的display值，比如div默认display属性值为“block”，成为“块级”元素；span默认display属性值为“inline”，是“行内”元素。</p>
					<p> （2）行内元素有：a b span img input select strong（强调的语气） 块级元素有：div ul ol li dl dt dd h1 h2 h3 h4…p  </p>

					<p>（3）知名的空元素： &lt;br&gt; &lt;hr&gt;&lt;img&gt;&lt;input&gt; &lt;link&gt; &lt;meta&gt;  </p>
					<p>鲜为人知的是： &lt;area&gt; &lt;base&gt; &lt;col&gt; &lt;command&gt;&lt;embed&gt; &lt;param&gt; &lt;source&gt; &lt;track&gt;&lt;wbr&gt;  </p>
					<h2>三、 link 和@import 的区别是？  </h2>
					<p>（1）link属于XHTML标签，而@import是CSS提供的; </p>
					<p>（2）页面被加载的时，link会同时被加载，而@import引用的CSS会等到页面被加载完再加载;</p>
					<p> （3）import只在IE5以上才能识别，而link是XHTML标签，无兼容问题; </p>
					<p>（4）link方式的样式的权重 高于@import的权重. </p>

					<h2>四、 浏览器的内核分别是什么?  </h2>
					<p> * IE浏览器的内核Trident、Mozilla的Gecko、Chrome的Blink（WebKit的分支）、Opera内核原为Presto，现为Blink；</p>
				</section>
				<div class="pagefooter">2/27</div>
			</div>

			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2>五、 常见兼容性问题？ </h2>
					<p>* png24位的图片在iE6浏览器上出现背景，解决方案是做成PNG8. </p>
					<p>* 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。</p>
					<p> * IE6双边距bug:块属性标签float后，又有横行的margin情况下，在ie6显示margin比设置的大。</p>

					<p> 浮动ie产生的双倍距离 #box{ float:left; width:10px; margin:0 0 0 100px;}  </p>
					<p>这种情况之下IE会产生20px的距离，解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别) </p>
					<p>渐进识别的方式，从总体中逐渐排除局部。  </p>
					<p>首先，巧妙的使用“\9”这一标记，将IE游览器从所有情况中分离出来。  </p>
					<p>接着，再次使用“+”将IE8和IE7、IE6分离开来，这样IE8已经独立识别。 </p>

					<p> css    </p>
					<p>   .bb{ </p>

					<p>      background-color:#f1ee18;/*所有识别*/   </p>

					<p>   .background-color:#00deff\9; /*IE6、7、8识别*/   </p>

					<p>   +background-color:#a200ff;/*IE6、7识别*/   </p>
					<p>  _background-color:#1e0bd1;/*IE6识别*/     </p>

					<p> }  </p>
					<p>*  IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性. 解决方法:统一通过getAttribute()获取自定义属性.</p>
					<p> * IE下,even对象有x,y属性,但是没有pageX,pageY属性;</p>

					<p> Firefox下,event对象有pageX,pageY属性,但是没有x,y属性. </p>
					<p>* 解决方法：（条件注释）缺点是在IE浏览器下可能会增加额外的HTTP请求数。</p>
				</section>
				<div class="pagefooter">3/27</div>
			</div>

			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>*Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决.</p>
					<p>超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hover和active了解决方法是改变 CSS属性的排列顺序:L-V-H-A : a:link {} a:visited {} a:hover {} a:active</p>
					<h2 class="fontsize">六、 html5有哪些新特性、移除了那些元素？如何处理HTML5新标签的浏览器兼容问题？
如何区分 HTML 和 HTML5？ </h2>
					<p>* HTML5 现在已经不是 SGML 的子集，主要是关于图像，位置，存储，多任务等功能的增加。</p>

					<p>* 绘画 canvas   </p>

					<p>用于媒介回放的 video 和 audio 元素  </p>

					<p>本地离线存储 localStorage 长期存储数据，浏览器关闭后数据不丢失； </p>

					<p>sessionStorage 的数据在浏览器关闭后自动删除 </p>

					<p>语意化更好的内容元素，比如 article、footer、header、nav、section  </p>
					<p>表单控件，calendar、date、time、email、url、search   </p>

					<p>新的技术webworker, websockt, Geolocation </p>
					<p>* 移除的元素-纯表现的元素：basefont，big，center，font, s，strike，tt，u；</p>

					<p>对可用性产生负面影响的元素：frame，frameset，noframes；  </p>
					<h2>七、 支持HTML5新标签： </h2>
					<p>* IE8/IE7/IE6支持通过document.createElement方法产生的标签，可以利用这一特性让这些浏览器支持HTML5新标签，浏览器支持新标签后，还需要添加标签默认的样式： </p>
					<p>* 当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架
						<p>&lt;!--[if lt IE 9]>&gt;</p>
						<p>&lt;script&gt; src="http://html5shim.googlecode.com/svn/trunk/html5.js"&lt;/script&gt;</p>
				</section>
				<div class="pagefooter">4/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>
						&lt;![endif]-->&gt;
					</p>
					<h2>八、 如何区分： DOCTYPE声明\新增的结构元素\功能元素，语义化的理解？ </h2>
					<p>用正确的标签做正确的事情！ </p>
					<p>html语义化就是让页面的内容结构化，便于对浏览器、搜索引擎解析；</p>

					<p>在没有样式CCS情况下也以一种文档格式显示，并且是容易阅读的。 </p>
					<p>搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重，利于 SEO。</p>

					<p>使阅读源代码的人对网站更容易将网站分块，便于阅读维护理解。 </p>
					<h2>九、 HTML5的离线储存？ </h2>
					<p>localStorage    长期存储数据，浏览器关闭后数据不丢失；</p>

					<p>sessionStorage  数据在浏览器关闭后自动删除。 </p>
					<h2>十、 (写)描述一段语义的html代码吧。 </h2>
					<p>（HTML5中新增加的很多标签（如：&lt;article&gt;、&lt;nav&gt;&lt;header&gt;和&lt;footer&gt;等）就是基于语义化设计原则） </p>
					<p>  &lt; div id="header"&gt; </p>
					<p>&lt; h1&gt;标题&lt; /h1&gt; </p>
					<p>&lt; h2&gt;专注Web前端技术&lt; /h2&gt;</p>
					<p> &lt; /div&gt; </p>
					<h2>十一、iframe有那些缺点？</h2>
					<p> *iframe会阻塞主页面的Onload事件；</p>
					<p> *iframe和主页面共享连接池，而浏览器对相同域的连接有限制，所以会影响页面的并行加载。</p>
					<p> 使用iframe之前需要考虑这两个缺点。如果需要使用iframe，最好是通过javascript </p>
					<p> 动态给iframe添加src属性值，这样可以可以绕开以上两个问题</p>
				</section>
				<div class="pagefooter">5/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2>十二、 请描述一下 cookies，sessionStorage 和 localStorage 的区别？ </h2>
					<p> cookie在浏览器和服务器间来回传递。 sessionStorage和localStorage不会 </p>
					<p>sessionStorage和localStorage的存储空间更大；</p>
					<p> sessionStorage和localStorage有更多丰富易用的接口；</p>
					<p> sessionStorage和localStorage各自独立的存储空间；</p>
					<h2>十三、 如何实现浏览器内多个标签页之间的通信? (阿里) </h2>
					<p>调用localstorge、cookies等本地存储方式</p>
					<h2>十四、 webSocket如何兼容低浏览器？(阿里) </h2>
					<p>Adobe Flash Socket 、 ActiveX HTMLFile (IE) 、基于 multipart 编码发送 XHR 、 基于长轮询的 XHR </p>
				</section>
				<div class="pagefooter">6/27</div>
			</div>

			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<div class="bigHeader">CSS</div>
					<h2>一、介绍一下CSS的盒子模型？ </h2>
					<p>（1）有两种， IE 盒子模型、标准 W3C 盒子模型；IE的content部分包含了 border 和 pading;  </p>
					<p> 2）盒模型： 内容(content)、填充(padding)、边界(margin)、 边框(border). </p>
					<h2 class="fontsize">二、 CSS 选择符有哪些？哪些属性可以继承？优先级算法如何计算？ CSS3新增伪类有 
那些？ </h2>
					<p>*1.id选择器（ # myid）</p>
					<p>2.类选择器（.myclassname）  </p>
					<p>3.标签选择器（div, h1, p）  </p>
					<p>4.相邻选择器（h1 + p）   </p>
					<p>5.子选择器（ul > li）    </p>
					<p>6.后代选择器（li a）   </p>
					<p>7.通配符选择器（ * ） </p>
					<p>8.属性选择器（a[rel = "external"]） </p>
					<p> 9.伪类选择器（a: hover, li: nth - child）</p>
					<p>*可继承的样式： font-size font-family color, UL LI DL DD DT; </p>
					<p>*不可继承的样式：border padding margin width height  </p>
					<p>*优先级就近原则，同权重情况下样式定义最近者为准; </p>
					<p>*载入样式以最后载入的定位为准; 优先级为: </p>
					<p>!important &gt; id &gt; class &gt; tag  </p>
				</section>
				<div class="pagefooter">7/27</div>
			</div>

			<div class="page">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p> important 比 内联优先级高 </p>
					<h2>三、 CSS3新增伪类举例： </h2>
					<p>p:first-of-type 选择属于其父元素的首个 &lt;p&gt; 元素的每个 &lt;p&gt; 元素。</p>
					<p>p:last-of-type  选择属于其父元素的最后 &lt;p&gt; 元素的每个 &lt;p&gt; 元素。</p>
					<p>p:only-of-type  选择属于其父元素唯一的 &lt;p&gt;元素的每个&lt;p&gt; 元素。</p>
					<p>p:only-child    选择属于其父元素的唯一子元素的每个 &lt;p&gt; 元素。</p>
					<p>p:nth-child(2)  选择属于其父元素的第二个子元素的每个 &lt;p&gt; 元素。</p>
					<p>:enabled  :disabled 控制表单控件的禁用状态。</p>
					<p>:checked        单选框或复选框被选中。 </p>
					<h2>四、 如何居中div？如何居中一个浮动元素？ </h2>
					<p>给div设置一个宽度，然后添加margin:0 auto属性 </p>
					<p>div{width:200px; margin:0 auto; }   </p>
					<h2>五、 居中一个浮动元素 </h2>
					<p>确定容器的宽高 宽500 高 300 的层   设置层的外边距 </p>
					<p>.div {  Width:500px  height:300px;//高度可以不设 </p>
					<p>Margin: -150px 0 0 -250px;   </p>
					<p>position:relative;相对定位    </p>
					<p>background-color:pink;//方便看效果  </p>
					<p>left:50%;  top:50%;}</p>
				</section>
				<div class="pagefooter">8/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2 class="fontsize">六、列出display的值，说明他们的作用。position的值， relative和absolute定位 原点是？</h2>
					<p>1.block 象块类型元素一样显示。 </p>
					<p>none 缺省值。象行内元素类型一样显示。  </p>
					<p>inline-block 象行内元素一样显示，但其内容象块类型元素一样显示。 </p>
					<p>list-item 象块类型元素一样显示，并添加样式列表标记。 </p>
					<p>2. *absolute 生成绝对定位的元素，相对于 static 定位以外的第一个父元素进行定位。 </p>
					<p>*fixed （老IE不支持）生成绝对定位的元素，相对于浏览器窗口进行定位。 </p>
					<p>*relative生成相对定位的元素，相对于其正常位置进行定位。  </p>
					<p>* static  默认值。没有定位，元素出现在正常的流中  </p>
					<p>*（忽略 top, bottom, left, right z-index 声明） </p>
					<p>* inherit 规定从父元素继承 position 属性的值。  </p>
					<h2>七、 CSS3有哪些新特性？    </h2>
					<p> CSS3实现圆角（border-radius:8px），阴影（box-shadow:10px），   </p>
					<p> 对文字加特效（text-shadow、），线性渐变（gradient），旋转（transform）    </p>
					<p> transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋转,缩放,定位,倾斜 </p>
					<p> 增加了更多的CSS选择器  多背景 rgba  </p>
					<h2> 八、一个满屏 品 字布局 如何设计? </h2>
					<h2> 九、经常遇到的CSS的兼容性有哪些？原因，解决方法是什么？ </h2>
					<h2> 十、为什么要初始化CSS样式。</h2>
				</section>
				<div class="pagefooter">9/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>因为浏览器的兼容问题，不同浏览器对有些标签的默认值是不同的，如果没对CSS初始化往往会出现浏览器之间的页面显示差异。</p>
					<p>当然，初始化样式会对SEO有一定的影响，但鱼和熊掌不可兼得，但力求影响最小的情况下初始化。</p>
					<p> *最简单的初始化方法就是： * {padding: 0; margin: 0;} （不建议）</p>
					<p>淘宝的样式初始化： </p>
					<p>body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }</p>
					<p>body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; } </p>
					<p>h1, h2, h3, h4, h5, h6{ font-size:100%; }</p>
					<p>address, cite, dfn, em, var { font-style:normal; } </p>
					<p>code, kbd, pre, samp { font-family:couriernew, courier, monospace; }</p>
					<p>small{ font-size:12px; } </p>
					<p>ul, ol { list-style:none; }</p>
					<p>a { text-decoration:none; } </p>
					<p>a:hover { text-decoration:underline; } </p>
					<p>sup { vertical-align:text-top; } </p>
					<p>sub{ vertical-align:text-bottom; } legend { color:#000; } </p>
					<p>fieldset, img { border:0; } </p>
					<p>button, input, select, textarea { font-size:100%; } </p>
					<p>table { border-collapse:collapse; border-spacing:0; } </p>
					<h2>十一、 absolute的containing block计算方式跟正常流有什么不同？ </h2>
				</section>
				<div class="pagefooter">10/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2 class="fontsize">十二、 position跟display、margin collapse、overflow、float这些特性相互叠加后会
					怎么样？ </h2>
					<h2>十三、 对BFC规范的理解？ </h2>
					<p>（W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关 系和相互作用。）
					</p>
					<h2>十四、 css定义的权重  </h2>
					<p>以下是权重的规则：标签的权重为1，class的权重为10，id的权重为100，以下例子是演示各种定义的权重值： </p>
					<p> /*权重为1*/ div{}</p>
					<p>/*权重为10*/ .class1{}  </p>
					<p> /*权重为100*/ #id1{} </p>
					<p>/*权重为100+1=101*/  </p>
					<p> #id1 div{} </p>
					<p>/*权重为10+1=11*/ </p>
					<p>  .class1 div{} </p>
					<p>/*权重为10+10+1=21*/ </p>
					<p> .class1 .class2 div{}  </p>
					<p>如果权重相同，则最后定义的样式会起作用，但是应该避免这种情况出现 </p>
					<h2>十五、 解释下浮动和它的工作原理？清除浮动的技巧 </h2>
				</section>
				<div class="pagefooter">11/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2 class="fontsize">十六、 用过媒体查询，针对移动端的布局吗？</h2>
					<h2> 十七、 使用 CSS 预处理器吗？喜欢那个？ </h2>
					<p>SASS</p>
					<h2>十八、 如果需要手动写动画，你认为最小时间间隔是多久，为什么？（阿里） </h2>
					<p>多数显示器默认频率是60Hz，即1秒刷新60次，所以理论上最小间隔为1/60＊1000ms ＝ 16.7ms </p>
					<h2>十九、 display:inline-block 什么时候会显示间隙？(携程) </h2>
					<p>移除空格、使用margin负值、使用font-size:0、letter-spacing、word-spacing</p>
				</section>
				<div class="pagefooter">12/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<div class="bigHeader">JavaScript</div>
					<h2>一、 JavaScript原型，原型链 ? 有什么特点？</h2>
					<h2>二、 eval是做什么的？ </h2>
					<p> 它的功能是把对应的字符串解析成JS代码并运行；应该避免使用eval，不安全，非常耗性能（2次，一次解析成js语句，一次执行）。</p>
					<h2>三、 null，undefined 的区别？</h2>
					<h2> 四、 写一个通用的事件侦听器函数。 </h2>
					<p> // event(事件)工具集，来源：github.com/markyun  </p>
					<p>markyun.Event = {        </p>

					<p> // 页面加载完成后  </p>

					<p> readyEvent : function(fn) {   </p>

					<p>  if (fn==null) {  </p>
					<p> fn=document;   </p>
					<p> }  </p>
					<p>var oldonload = window.onload; </p>
					<p> if (typeof window.onload != 'function') {   </p>

					<p>     window.onload = fn;     </p>
					<p>} else {  </p>

					<p>  window.onload = function() { </p>
					<p>   oldonload(); </p>

				</section>
				<div class="pagefooter">13/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>   fn();     </p>
					<p>       };   </p>
					<p>     }  </p>
					<p>    }, </p>
					<p> // 视能力分别使用dom0||dom2||IE方式 来绑定事件  </p>
					<p>// 参数： 操作的元素,事件名称 ,事件处理程序     </p>
					<p>addEvent : function(element, type, handler) { </p>
					<p>if (element.addEventListener) { </p>
					<p> //事件类型、需要执行的函数、是否捕捉 </p>
					<p> element.addEventListener(type, handler, false);  </p>
					<p>} else if (element.attachEvent)</p>
					<p>{ </p>
					<p> element.attachEvent('on' + type, function() {</p>
					<p>   handler.call(element);   </p>
					<p>});  </p>
					<p>}</p>
					<p>else { </p>
					<p> element['on' + type] = handler; </p>
					<p> }   </p>

					<p>}, </p>

					<p> // 移除事件 </p>

					<p> removeEvent : function(element, type, handler) {  </p>

					<p> if (element.removeEnentListener) { </p>

					<p>  element.removeEnentListener(type, handler, false); </p>

				</section>
				<div class="pagefooter">14/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>  } </p>
					<p> else if (element.datachEvent) { </p>
					<p> element.detachEvent('on' + type, handler); </p>
					<p> } else { </p>
					<p> element['on' + type] = null; </p>
					<p> } </p>
					<p> }, </p>
					<p> // 阻止事件 (主要是事件冒泡，因为IE不支持事件捕获) </p>
					<p>  stopPropagation : function(ev) {    </p>
					<p>  if (ev.stopPropagation) {      </p>
					<p>   ev.stopPropagation();  </p>
					<p>   } else {  </p>

					<p>  ev.cancelBubble = true;   </p>
					<p>  }     </p>

					<p> },  </p>

					<p> // 取消事件的默认行为  </p>

					<p> preventDefault : function(event) {  </p>
					<p>   if (event.preventDefault) {   </p>
					<p>        event.preventDefault();   </p>

					<p>    } else {  </p>

					<p> event.returnValue = false;   </p>
					<p>   } </p>
					<p> } </p>
				</section>
				<div class="pagefooter">15/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>  // 获取事件目标  </p>

					<p>   getTarget : function(event) {  </p>

					<p>  return event.target || event.srcElement;  </p>
					<p> },  </p>

					<p> // 获取event对象的引用，取到事件的所有信息，确保随时能使用event；   </p>

					<p> getEvent : function(e) {         </p>

					<p>  var ev = e || window.event;      </p>
					<p> if (!ev) {  </p>

					<p>   var c = this.getEvent.caller;  </p>

					<p>    while (c) {  </p>

					<p>        ev = c.arguments[0];  </p>

					<p>         if (ev && Event == ev.constructor) {   </p>
					<p>               break;           </p>

					<p>     }  </p>

					<p>           c = c.caller;   </p>
					<p>    }        </p>

					<p>  }  </p>

					<p>    return ev;   </p>

					<p>  }     </p>

					<p>};   </p>
					<h2>五、 Node.js的适用场景？ </h2>
					<p>高并发、聊天、实时消息推送  </p>

				</section>
				<div class="pagefooter">16/27</div>
			</div>

			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2> 六、 介绍js的基本数据类型。 </h2>
					<p> number,string,boolean,object,undefined </p>
					<h2>七、 Javascript如何实现继承？  </h2>
					<p> 通过原型和构造器 </p>
					<h2>八、 ["1", "2", "3"].map(parseInt) 答案是多少？  </h2>
					<p> [1, NaN, NaN] 因为 parseInt 需要两个参数 (val, radix)，其中 radix 表示解析时用的基数。map 传了 3 个 (element, index, array)，对应的 radix 不合法导致解析失败。</p>
					<h2>九、 如何创建一个对象? （画出此对象的内存图）  </h2>
					<p> function Person(name, age) {</p>
					<p>   this.name = name;  </p>
					<p>  this.age = age; </p>
					<p>  this.sing = function() {</p>
					<p>  alert(this.name) </p>
					<p> }   </p>
					<p> }  </p>
					<h2>十、 谈谈This对象的理解。  </h2>
					<p> this是js的一个关键字，随着函数使用场合不同，this的值会发生变化。但是有一个总原则，那就是this指的是调用函数的那个对象。this一般情况下：是全局对象Global。 作为方法调用，那么this就是指这个对象</p>
					<h2>十一、 事件是？IE与火狐的事件机制有什么区别？ 如何阻止冒泡？  </h2>
					<p> 1. 我们在网页中的某个操作（有的操作对应多个事件）。例如：当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。 </p>
					<p> 2. 事件处理机制：IE是事件冒泡、火狐是 事件捕获； </p>
					<p>   3. ev.stopPropagation(); </p>
				</section>
				<div class="pagefooter">17/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2>	十二、 什么是闭包（closure），为什么要用它？ </h2>
					<p> 执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在.使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源，因为say667()的内部函数的执行需要依赖say667()中的变量。这是对闭包作用的非常直白的描述.</p>
					<p>  function say667() { </p>
					<p>     // Local variable that ends up within closure  </p>
					<p>    var num = 666; </p>
					<p>    var sayAlert = function() {</p>
					<p>   alert(num); </p>
					<p> }     </p>
					<p> num++;   </p>
					<p>   return sayAlert; } </p>
					<p>  var sayAlert = say667(); </p>
					<p>  sayAlert()//执行结果应该弹出的667  </p>
					<h2>十三、 "use strict";是什么意思 ? 使用它的好处和坏处分别是什么？</h2>
					<h2> 十四、 如何判断一个对象是否属于某个类？ </h2>
					<p>  使用instanceof （待完善）  </p>
					<p>   if(a instanceof Person){ </p>
					<p>       alert('yes'); </p>
					<p>    } </p>
					<h2>十五、 new操作符具体干了什么呢? </h2>
					<p> 1、创建一个空对象，并且 this 变量引用该对象，同时还继承了该函数的原型。</p>
				</section>
				<div class="pagefooter">18/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>  2、属性和方法被加入到 this 引用的对象中</p>。
					<p>  3、新创建的对象由 this 所引用，并且最后隐式的返回 this 。</p>
					<p> var obj  = {}; </p>
					<p> obj.__proto__ = Base.prototype; Base.call(obj);  </p>
					<h2 class="fontsize">十六、 Javascript中，有一个函数，执行时对象查找时，永远不会去查找原型，这个函数是？ </h2>
					<p> hasOwnProperty </p>
					<p> 十七、 JSON 的了解？</p>
					<p>JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。</p>
					<p> 它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小</p>
					<p> {'age':'12', 'name':'back'} </p>
					<h2>十八、 js延迟加载的方式有哪些？ </h2>
					<p> defer和async、动态创建DOM方式（用得最多）、按需异步载入js </p>
					<h2>十九、 ajax 是什么?</h2>
					<h2> 二十、 同步和异步的区别? </h2>
					<h2>二十一、 如何解决跨域问题? </h2>
					<p>sonp、 iframe、window.name、window.postMessage、服务器上设置代理页面 </p>
					<h2>二十二、 模块化怎么做？立即执行函数,不暴露私有成员 </h2>
					<p>var module1 = (function(){ </p>
				</section>
				<div class="pagefooter">19/27</div>
			</div>

			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>&nbsp;var m1 = function(){ &nbsp; </p>
					<p> &nbsp;}; &nbsp; </p>
					<p>&nbsp; var m2 = function(){ &nbsp;  </p>
					<p> &nbsp; //... &nbsp;    </p>
					<p> &nbsp;};  &nbsp;   </p>
					<p> &nbsp;return {&nbsp;    </p>
					<p>m1 : m1,  </p>
					<p>m2 : m2    </p>
					<p> &nbsp;}; &nbsp;  </p>
					<p>&nbsp; })(); &nbsp;  </p>
					<h2 class="fontsize">二十三、 AMD（Modules/Asynchronous-Definition）、CMD（Common Module
					Definition）规范区别？</h2>
					<h2>二十四、 异步加载的方式有哪些？ </h2>
					<p>(1) defer，只支持IE </p>
					<p>(2) async： </p>
					<p>(3) 创建script，插入到DOM中，加载完毕后callBack </p>
					<h2>二十五、 documen.write和 innerHTML的区别 </h2>
					<p>document.write只能重绘整个页面</p>
					<p> innerHTML可以重绘页面的一部分</p>
				</section>
				<div class="pagefooter">20/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<h2>二十六、 .call() 和 .apply() 的区别？ </h2>
					<p>例子中用 add 来替换 sub，add.call(sub,3,1) == add(3,1) ，所以运行结果为：alert(4);  </p>

					<p>注意：js 中的函数其实是对象，函数名是对 Function 对象的引用。  </p>
					<p>function add(a,b) </p>

					<p>{alert(a+b); }  </p>

					<p>function sub(a,b)   {  </p>

					<p>alert(a-b);  </p>

					<p>} </p>

					<p> add.call(sub,3,1);   </p>
					<h2>二十七、 Jquery与jQuery UI 有啥区别？ </h2>
					<p>*jQuery是一个js库，主要提供的功能是选择器，属性修改和事件绑定等等。 </p>
					<p>*jQuery UI则是在jQuery的基础上，利用jQuery的扩展性，设计的插件。 </p>
					<p> 提供了一些常用的界面元素，诸如对话框、拖动行为、改变大小行为等等 </p>
					<h2>二十八、 JQuery的源码看过吗？能不能简单说一下它的实现原理？ </h2>
					<h2>二十九、 jquery 中如何将数组转化为json字符串，然后再转化回来？</h2>
					<p>jQuery中没有提供这个功能，所以你需要先编写两个jQuery的扩展：  </p>

					<p> $.fn.stringifyArray = function(array) {   </p>

					<p>return JSON.stringify(array) </p>
				</section>
				<div class="pagefooter">21/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p> } </p>
					<p>$.fn.parseArray = function(array) { </p>
					<p>eturn JSON.parse(array) </p>
					<p>}  </p>

					<p>然后调用： </p>

					<p>$("").stringifyArray(array) </p>
					<h2>三十、 针对 jQuery 的优化方法？ </h2>
					<p>*基于Class的选择性的性能相对于Id选择器开销很大，因为需遍历所有DOM元素。</p>
					<p> *频繁操作的DOM，先缓存起来再操作。用Jquery的链式调用更好。 </p>

					<p> 比如：var str=$("a").attr("href");</p>

					<p>*for (var i = size; i &lt; i++) {} </p>

					<p>for 循环每一次循环都查找了数组 (arr) 的.length 属性，在开始循环的时候设置一个变量来存储这个数字，可以让循环跑得更快：  </p>

					<p>for (var i = size, length = arr.length; i &lt; length; i++) {} </p>
					<h2>三十一、 JavaScript中的作用域与变量声明提升？  </h2>
					<h2>三十二、 如何编写高性能的Javascript？ </h2>
					<h2> 三十三、 那些操作会造成内存泄漏？  </h2>
					<p>内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。 </p>
					<p>垃圾回收器定期扫描对象，并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0（没有其他对象引用过该对象），或对该对象的惟一引用是循环的，那么该对象的内存即可回收。</p>
					<p>setTimeout 的第一个参数使用字符串而非函数的话，会引发内存泄漏。</p>
				</section>
				<div class="pagefooter">22/27</div>
			</div>

			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>闭包、控制台日志、循环（在两个对象彼此引用且彼此保留时，就会产生一个循环） </p>
					<h2>三十四、 JQuery一个对象可以同时绑定多个事件，这是如何实现的？</h2>
					<h2> 三十五、 如何判断当前脚本运行在浏览器还是node环境中？（阿里） </h2>
					<p>通过判断Global对象是否为window，如果不为window，当前脚本没有运行在浏览器中 </p>
					<h2>三十六、 对Node的优点和缺点提出了自己的看法？ </h2>
					<p>*（优点）因为Node是基于事件驱动和无阻塞的，所以非常适合处理并发请求， </p>
					<p> 因此构建在Node上的代理服务器相比其他技术实现（如Ruby）的服务器表现要好得多。
					</p>
					<p> 此外，与Node代理服务器交互的客户端代码是由javascript语言编写的， </p>
					<p> 因此客户端和服务器端都用同一种语言编写，这是非常美妙的事情。  </p>
					<p>*（缺点）Node是一个相对新的开源项目，所以不太稳定，它总是一直在变，  </p>
					<p> 而且缺少足够多的第三方库支持。看起来，就像是Ruby/Rails当年的样子。</p>
				</section>
				<div class="pagefooter">23/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<div class="bigHeader">其他问题</div>
					<h2>一、 	你有哪些性能优化的方法？</h2>
					<p> （看雅虎14条性能优化原则）。 </p>

					<p>  （1） 减少http请求次数：CSS Sprites, JS、CSS源码压缩、图片大小控制合适；网页Gzip，CDN托管，data缓存 ，图片服务器。 </p>

					<p> （2） 前端模板 JS+数据，减少由于HTML标签导致的带宽浪费，前端用变量保存AJAX请求结果，每次操作本地变量，不用请求，减少请求次数 </p>

					<p>  （3） 用innerHTML代替DOM操作，减少DOM操作次数，优化javascript性能。  </p>

					<p> （4） 当需要设置的样式很多时设置className而不是直接操作style。  </p>

					<p> （5） 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。 </p>

					<p>  （6） 避免使用CSS Expression（css表达式)又称Dynamic properties(动态属性)。</p>

					<p>  （7） 图片预加载，将样式表放在顶部，将脚本放在底部  加上时间戳。 </p>

					<p>  （8） 避免在页面的主体布局中使用table，table要等其中的内容完全下载之后才会显示出来，显示比div+css布局慢。</p>
					<h2>二、 http状态码有那些？分别代表是什么意思？ </h2>
					<p> 100-199 用于指定客户端应相应的某些动作。  </p>
					<p> 200-299 用于表示请求成功。  </p>
					<p> 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 </p>
					<p> 400-499 用于指出客户端的错误。 </p>
					<p> 400   语义有误，当前请求无法被服务器理解。</p>
					<p>  401   当前请求需要用户验证  </p>
					<p> 403  服务器已经理解请求，但是拒绝执行它。</p>
				</section>
				<div class="pagefooter">24/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>500-599 用于支持服务器错误。 </p>
					<p>503 – 服务不可用</p>
					<h2>三、 一个页面从输入 URL </h2>
					<p>到页面加载显示完成，这个过程中都发生了什么？（流程说的 越详细越好）</p>
					<p> 查找浏览器缓存 </p>
					<p>DNS解析、查找该域名对应的IP地址、重定向（301）、发出第二个GET请求</p>
					<p> 进行HTTP协议会话</p>
					<p> 客户端发送报头(请求报头)</p>
					<p> 服务器回馈报头(响应报头)</p>
					<p>tml文档开始下载</p>
					<p> 文档树建立，根据标记请求所需指定MIME类型的文件</p>
					<p>文件显示</p>
					<p>[ </p>
					<p>浏览器这边做的工作大致分为以下几步：</p>
					<p> 加载：根据请求的URL进行域名解析，向服务器发起请求，接收文件（HTML、JS、CSS、图象等）。</p>
					<p> 解析：对加载到的资源（HTML、JS、CSS等）进行语法解析，建议相应的内部数据结构（比如HTML的DOM</p>
					<p>树，JS的（对象）属性表，CSS的样式规则等等）</p>
					<p>} </p>

					<h2> 四、 平时如何管理你的项目？ </h2>
					<p> 先期团队必须确定好全局样式（globe.css），编码模式(utf-8) 等；</p>
					<p> 编写习惯必须一致（例如都是采用继承式的写法，单样式都写成一行）；</p>
					<p> 标注样式编写人，各模块都及时标注（标注关键样式调用的地方）；</p>
				</section>
				<div class="pagefooter">25/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>页面进行标注（例如 页面 模块 开始和结束）；</p>
					<p>CSS跟HTML 分文件夹并行存放，命名都得统一（例如style.css）；</p>
					<p>JS 分文件夹存放 命名以该JS功能为准的英文翻译。</p>
					<p>图片采用整合的 images.png png8 格式文件使用 尽量整合在一起使用方便将来的管理</p>
					<h2>  五、 说说最近最流行的一些东西吧？常去哪些网站？</h2>
					<p>Node.js、Mongodb、npm、MVVM、MEAN、three.js </p>
					<h2>  六、 移动端（Android IOS）怎么做好用户体验?    </h2>
					<p>清晰的视觉纵线、信息的分组、极致的减法、</p>
					<p> 利用选择代替输入、标签及文字的排布方式、</p>
					<p> 依靠明文确认密码、合理的键盘利用、</p>
					<h2>  七、 想问公司的问题？</h2>
					<p> 目前关注哪些最新的Web前端技术（未来的发展方向）？</p>
					<p>（实现一个产品的流程）？</p>
					<p>公司的薪资结构是什么样子的？</p>
					<h2> 八、 优质网站推荐</h2>
					<p>极客标签：</p>
					<p> http://www.gbtags.com/ 码农周刊：</p>
					<p> http://weekly.manong.io/issues/ 前端周刊：</p>
					<p>http://www.feweekly.com/issues 极客头条</p>：
					<p>http://geek.csdn.net/ Startup News：</p>
					<p>http://news.dbanotes.net/ Hacker News： https://news.ycombinator.com/news </p>
				</section>
				<div class="pagefooter">26/27</div>
			</div>
			<div class="page page1">
				<div class='pagescript'>前端面试题</div>
				<hr />
				<section>
					<p>InfoQ： http://www.infoq.com/ </p>
					<p>w3cplus： http://www.w3cplus.com/ Stack Overflow：</p>
					<p> http://stackoverflow.com/ </p>
					<p>Atp： http://atp-posts.b0.upaiyun.com/posts/</p>
				</section>
				<div class="pagefooter">27/27</div>
			</div>
		</div>
	</body>

</html>